home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Tests / mu.w < prev    next >
Encoding:
Text File  |  1989-04-14  |  9.2 KB  |  545 lines

  1. procedure  main/0
  2.  
  3. _767:
  4.     put_constant  muui,X1
  5.     execute_proc  theorem/1
  6.  
  7.  
  8. procedure  theorem/1
  9.  
  10. _1582:
  11.     init  Y1
  12.     put_variable_y  Y2,X2
  13.     call  explode/2,2
  14.     put_value_y  Y2,X1
  15.     put_variable_x  X2,X2
  16.     escape  length/2
  17.     put_variable_x  X5,X1
  18.     put_constant  -,X3
  19.     put_constant  &1,X4
  20.     escape  is/4
  21.     put_list  X6
  22.     unify_constant_write  m
  23.     get_cdr_list_write
  24.     unify_constant_write  i
  25.     unify_nil_write
  26.     put_value_x  X6,X1
  27.     put_unsafe_value  Y2,X2
  28.     put_constant  &1,X3
  29.     put_value_x  X5,X4
  30.     put_value_y  Y1,X5
  31.     put_constant  &0,X6
  32.     call  derive/6,1
  33.     escape  nl/0
  34.     put_list  X1
  35.     unify_variable_write_x  X2
  36.     unify_variable_write_x  X8
  37.     get_value_y  Y1,X8
  38.     get_structure  rule/2,X2,2
  39.     unify_constant  &0
  40.     unify_variable_x  X2
  41.     get_list  X2
  42.     unify_constant  m
  43.     get_cdr_list
  44.     unify_constant  i
  45.     unify_nil
  46.     put_constant  &0,X2
  47.     execute_proc  print_results/2
  48.  
  49.  
  50. procedure  derive/6
  51.  
  52. _2987:
  53.     try_me_else  _2992,6
  54. _2996:
  55.     get_variable_x  X7,X1
  56.     get_variable_y  Y5,X2
  57.     get_variable_y  Y4,X3
  58.     get_variable_y  Y3,X4
  59.     get_variable_y  Y2,X5
  60.     get_variable_y  Y1,X6
  61.     put_variable_x  X5,X1
  62.     put_value_y  Y1,X2
  63.     put_constant  +,X3
  64.     put_constant  &1,X4
  65.     escape  is/4
  66.     put_constant  'depth ',X1
  67.     escape  write/1
  68.     put_value_x  X5,X1
  69.     escape  write/1
  70.     escape  nl/0
  71.     put_value_x  X7,X1
  72.     put_value_y  Y5,X2
  73.     put_value_y  Y4,X3
  74.     put_value_y  Y3,X4
  75.     put_constant  &1,X5
  76.     put_value_y  Y2,X6
  77.     put_value_y  Y1,X7
  78.     execute_proc  derive2/7
  79. _2992:
  80.     trust_me_else  fail
  81. _3215:
  82.     get_variable_x  X7,X1
  83.     get_variable_y  Y4,X2
  84.     get_variable_y  Y3,X3
  85.     get_variable_y  Y2,X4
  86.     put_variable_y  Y1,X1
  87.     put_value_x  X6,X2
  88.     put_constant  +,X3
  89.     put_constant  &1,X4
  90.     escape  is/4
  91.     put_value_x  X7,X1
  92.     put_value_y  Y4,X2
  93.     put_value_y  Y3,X3
  94.     put_value_y  Y2,X4
  95.     put_unsafe_value  Y1,X6
  96.     execute_proc  derive/6
  97.  
  98.  
  99. procedure  derive2/7
  100.  
  101. _5125:
  102.     try_me_else  _5130,7
  103. _5134:
  104.     get_value_x  X1,X2
  105.     get_value_x  X3,X4
  106.     get_nil  X6
  107.     proceed
  108. _5130:
  109.     trust_me_else  fail
  110. _5175:
  111.     init  Y5
  112.     init  Y3
  113.     init  Y1
  114.     get_variable_y  Y11,X1
  115.     get_variable_y  Y6,X2
  116.     get_variable_y  Y10,X3
  117.     get_variable_y  Y4,X4
  118.     get_variable_y  Y9,X5
  119.     get_variable_y  Y12,X7
  120.     get_list  X6
  121.     unify_variable_x  X4
  122.     unify_variable_y  Y2
  123.     get_structure  rule/2,X4,2
  124.     unify_variable_y  Y8
  125.     unify_variable_y  Y7
  126.     put_value_y  Y10,X1
  127.     put_value_y  Y4,X2
  128.     put_variable_y  Y13,X3
  129.     call  lower_bound/3,13
  130.     put_value_y  Y12,X1
  131.     put_unsafe_value  Y13,X2
  132.     escape  >=/2
  133.     put_value_y  Y1,X1
  134.     put_value_y  Y12,X2
  135.     put_constant  -,X3
  136.     put_constant  &1,X4
  137.     escape  is/4
  138.     put_value_y  Y11,X1
  139.     put_value_y  Y7,X2
  140.     put_value_y  Y10,X3
  141.     put_value_y  Y5,X4
  142.     put_value_y  Y9,X5
  143.     put_value_y  Y3,X6
  144.     put_value_y  Y8,X7
  145.     call  rule/7,7
  146.     put_value_y  Y7,X1
  147.     put_value_y  Y6,X2
  148.     put_unsafe_value  Y5,X3
  149.     put_value_y  Y4,X4
  150.     put_unsafe_value  Y3,X5
  151.     put_value_y  Y2,X6
  152.     put_unsafe_value  Y1,X7
  153.     execute_proc  derive2/7
  154.  
  155.  
  156. procedure  rule/7
  157.  
  158. _6634:
  159.     get_list  X1
  160.     unify_constant  m
  161.     unify_variable_x  X1
  162.     get_list  X2
  163.     unify_constant  m
  164.     unify_variable_x  X2
  165.     put_variable_y  Y1,X8
  166.     get_structure  dummy/4,X8,4
  167.     unify_constant  &1
  168.     unify_constant  i
  169.     unify_value_x  X7
  170.     unify_variable_y  Y2
  171.     put_value_y  Y2,X8
  172.     get_structure  -/2,X8,2
  173.     unify_variable_y  Y2
  174.     unify_value_y  Y2
  175.     put_unsafe_value  Y1,X7
  176.     execute_proc  rule/10
  177.  
  178.  
  179. procedure  rule/10
  180.  
  181.     switch_on_term  _9462,_9463,fail
  182. _9468:
  183.     try_me_else  _9473,7
  184. _9477:
  185.     get_variable_y  Y1,X3
  186.     get_variable_y  Y2,X4
  187.     get_list  X1
  188.     unify_constant  i
  189.     unify_nil
  190.     get_list  X2
  191.     unify_constant  i
  192.     get_cdr_list
  193.     unify_constant  u
  194.     unify_nil
  195.     get_structure  dummy/4,X7,4
  196.     unify_variable_x  X3
  197.     unify_void
  198.     unify_constant  &1
  199.     unify_void
  200.     put_value_x  X3,X1
  201.     put_value_x  X5,X2
  202.     escape  >=/2
  203.     put_value_x  X6,X1
  204.     put_value_x  X3,X2
  205.     put_constant  -,X3
  206.     put_constant  &2,X4
  207.     escape  is/4
  208.     put_value_y  Y2,X1
  209.     put_value_y  Y1,X2
  210.     put_constant  +,X3
  211.     put_constant  &1,X4
  212.     escape  is/4
  213.     proceed
  214. _9473:
  215.     retry_me_else  _9694
  216. _9462:
  217.     get_variable_y  Y1,X3
  218.     get_constant  &1,X6
  219.     get_nil  X1
  220.     get_structure  dummy/4,X7,4
  221.     unify_void
  222.     unify_void
  223.     unify_constant  &2
  224.     unify_variable_x  X5
  225.     get_structure  -/2,X5,2
  226.     unify_value_x  X2
  227.     unify_variable_x  X5
  228.     get_nil  X5
  229.     put_value_x  X4,X1
  230.     put_value_y  Y1,X2
  231.     put_constant  +,X3
  232.     put_value_y  Y1,X4
  233.     escape  is/4
  234.     proceed
  235. _9694:
  236.     retry_me_else  _9846
  237. _9850:
  238.     get_variable_y  Y1,X3
  239.     get_variable_y  Y2,X4
  240.     get_list  X1
  241.     unify_constant  i
  242.     get_cdr_list
  243.     unify_constant  i
  244.     get_cdr_list
  245.     unify_constant  i
  246.     unify_variable_x  X3
  247.     get_list  X2
  248.     unify_constant  u
  249.     unify_variable_x  X8
  250.     get_value_x  X3,X8
  251.     get_structure  dummy/4,X7,4
  252.     unify_variable_x  X3
  253.     unify_void
  254.     unify_constant  &3
  255.     unify_void
  256.     put_value_x  X3,X1
  257.     put_value_x  X5,X2
  258.     escape  >=/2
  259.     put_value_x  X6,X1
  260.     put_value_x  X3,X2
  261.     put_constant  -,X3
  262.     put_constant  &1,X4
  263.     escape  is/4
  264.     put_value_y  Y2,X1
  265.     put_value_y  Y1,X2
  266.     put_constant  -,X3
  267.     put_constant  &2,X4
  268.     escape  is/4
  269.     proceed
  270. _9846:
  271.     retry_me_else  _10095
  272. _10099:
  273.     get_variable_y  Y1,X3
  274.     get_variable_y  Y2,X4
  275.     get_list  X1
  276.     unify_constant  u
  277.     get_cdr_list
  278.     unify_constant  u
  279.     unify_variable_x  X8
  280.     get_value_x  X2,X8
  281.     get_structure  dummy/4,X7,4
  282.     unify_variable_x  X3
  283.     unify_constant  i
  284.     unify_constant  &4
  285.     unify_void
  286.     put_value_x  X3,X1
  287.     put_value_x  X5,X2
  288.     escape  >=/2
  289.     put_value_x  X6,X1
  290.     put_value_x  X3,X2
  291.     put_constant  -,X3
  292.     put_constant  &2,X4
  293.     escape  is/4
  294.     put_value_y  Y2,X1
  295.     put_value_y  Y1,X2
  296.     put_constant  -,X3
  297.     put_constant  &2,X4
  298.     escape  is/4
  299.     proceed
  300. _10095:
  301.     trust_me_else  fail
  302. _10318:
  303.     get_variable_y  Y3,X3
  304.     get_variable_y  Y2,X4
  305.     get_list  X1
  306.     unify_variable_y  Y8
  307.     unify_variable_y  Y5
  308.     get_list  X2
  309.     unify_value_y  Y8
  310.     unify_variable_y  Y4
  311.     get_structure  dummy/4,X7,4
  312.     unify_variable_x  X2
  313.     unify_void
  314.     unify_variable_x  X7
  315.     unify_variable_y  Y7
  316.     put_value_y  Y7,X8
  317.     get_structure  -/2,X8,2
  318.     unify_variable_y  Y7
  319.     unify_variable_y  Y6
  320.     put_value_y  Y6,X8
  321.     get_list  X8
  322.     unify_value_y  Y8
  323.     unify_variable_y  Y6
  324.     put_variable_x  X1,X1
  325.     put_constant  +,X3
  326.     put_constant  &1,X4
  327.     escape  is/4
  328.     put_variable_y  Y1,X8
  329.     get_structure  dummy/4,X8,4
  330.     unify_value_x  X1
  331.     unify_value_y  Y8
  332.     unify_value_x  X7
  333.     unify_variable_x  X1
  334.     get_structure  -/2,X1,2
  335.     unify_value_y  Y7
  336.     unify_value_y  Y6
  337.     put_value_y  Y5,X1
  338.     put_value_y  Y4,X2
  339.     put_value_y  Y3,X3
  340.     put_value_y  Y2,X4
  341.     put_unsafe_value  Y1,X7
  342.     execute_proc  rule/10
  343. _9463:
  344.     try  _9477,7
  345.     retry  _9850
  346.     retry  _10099
  347.     trust  _10318
  348.  
  349.  
  350. procedure  print_results/2
  351.  
  352.     switch_on_term  _12483,_12484,fail
  353. _12489:
  354.     try_me_else  _12494,2
  355. _12483:
  356.     get_nil  X1
  357.     proceed
  358. _12494:
  359.     trust_me_else  fail
  360. _12484:
  361.     get_list  X1
  362.     unify_variable_x  X5
  363.     unify_variable_y  Y2
  364.     get_structure  rule/2,X5,2
  365.     unify_variable_y  Y4
  366.     unify_variable_x  X5
  367.     put_variable_y  Y1,X1
  368.     put_constant  +,X3
  369.     put_constant  &1,X4
  370.     escape  is/4
  371.     put_variable_y  Y3,X1
  372.     put_value_x  X5,X2
  373.     call  implode/2,4
  374.     put_value_y  Y1,X1
  375.     escape  write/1
  376.     put_constant  '  ',X1
  377.     escape  write/1
  378.     put_value_y  Y4,X1
  379.     call  print_rule/1,3
  380.     put_unsafe_value  Y3,X1
  381.     escape  write/1
  382.     escape  nl/0
  383.     put_value_y  Y2,X1
  384.     put_unsafe_value  Y1,X2
  385.     execute_proc  print_results/2
  386.  
  387.  
  388. procedure  print_rule/1
  389.  
  390.     switch_on_term  _13583,_13584,_13584
  391. _13583:
  392.     try_me_else  _13594,1
  393. _13598:
  394.     get_constant  &0,X1
  395.     put_constant  'axiom    ',X1
  396.     escape  write/1
  397.     proceed
  398. _13594:
  399.     trust_me_else  fail
  400. _13584:
  401.     get_variable_x  X3,X1
  402.     put_value_x  X3,X1
  403.     put_constant  &0,X2
  404.     escape  =\=/2
  405.     put_constant  'rule ',X1
  406.     escape  write/1
  407.     put_value_x  X3,X1
  408.     escape  write/1
  409.     put_constant  '   ',X1
  410.     escape  write/1
  411.     proceed
  412.  
  413.  
  414. procedure  explode/2
  415.  
  416. _14278:
  417.     get_variable_x  X3,X2
  418.     put_variable_x  X2,X2
  419.     escape  name/2
  420.     put_value_x  X3,X1
  421.     execute_proc  name_list/2
  422.  
  423.  
  424. procedure  implode/2
  425.  
  426. _14658:
  427.     get_variable_y  Y2,X1
  428.     put_value_x  X2,X1
  429.     put_variable_y  Y1,X2
  430.     call  name_list/2,2
  431.     put_value_y  Y2,X1
  432.     put_unsafe_value  Y1,X2
  433.     escape  name/2
  434.     proceed
  435.  
  436.  
  437. procedure  name_list/2
  438.  
  439.     switch_on_term  _15363,_15364,fail
  440. _15369:
  441.     try_me_else  _15374,2
  442. _15363:
  443.     get_nil  X1
  444.     get_nil  X2
  445.     proceed
  446. _15374:
  447.     trust_me_else  fail
  448. _15364:
  449.     get_list  X1
  450.     unify_variable_x  X1
  451.     unify_variable_x  X3
  452.     get_list  X2
  453.     unify_variable_x  X4
  454.     unify_variable_x  X5
  455.     put_list  X2
  456.     unify_value_write_x  X4
  457.     unify_nil_write
  458.     escape  name/2
  459.     put_value_x  X3,X1
  460.     put_value_x  X5,X2
  461.     execute_proc  name_list/2
  462.  
  463.  
  464. procedure  lower_bound/3
  465.  
  466. _17043:
  467.     try_me_else  _17048,3
  468. _17052:
  469.     get_constant  &1,X3
  470.     escape  </2
  471.     proceed
  472. _17048:
  473.     retry_me_else  _17076
  474. _17080:
  475.     get_value_x  X1,X2
  476.     get_constant  &2,X3
  477.     proceed
  478. _17076:
  479.     trust_me_else  fail
  480. _17113:
  481.     get_variable_x  X4,X1
  482.     get_variable_x  X5,X2
  483.     get_variable_x  X6,X3
  484.     put_value_x  X4,X1
  485.     put_value_x  X5,X2
  486.     escape  >/2
  487.     put_variable_x  X7,X1
  488.     put_value_x  X4,X2
  489.     put_constant  -,X3
  490.     put_value_x  X5,X4
  491.     escape  is/4
  492.     put_value_x  X6,X1
  493.     put_value_x  X7,X2
  494.     execute_proc  _dummy_0/2
  495.  
  496.  
  497. procedure  _dummy_0/2
  498.  
  499. _17864:
  500.     try_me_else  _17869,2
  501. _17873:
  502.     get_variable_y  Y2,X1
  503.     get_variable_y  Y1,X2
  504.     put_value_y  Y1,X1
  505.     call  even/1,2
  506.     cut
  507.     put_value_y  Y2,X1
  508.     put_value_y  Y1,X2
  509.     put_constant  //,X3
  510.     put_constant  &2,X4
  511.     escape  is/4
  512.     proceed
  513. _17869:
  514.     trust_me_else  fail
  515. _17966:
  516.     get_variable_x  X5,X1
  517.     put_variable_x  X6,X1
  518.     put_constant  +,X3
  519.     put_constant  &1,X4
  520.     escape  is/4
  521.     put_variable_x  X7,X1
  522.     put_value_x  X6,X2
  523.     put_constant  //,X3
  524.     put_constant  &2,X4
  525.     escape  is/4
  526.     put_value_x  X5,X1
  527.     put_value_x  X7,X2
  528.     put_constant  +,X3
  529.     put_constant  &1,X4
  530.     escape  is/4
  531.     proceed
  532.  
  533.  
  534. procedure  even/1
  535.  
  536. _18587:
  537.     get_variable_x  X2,X1
  538.     put_constant  &0,X1
  539.     put_constant  mod,X3
  540.     put_constant  &2,X4
  541.     escape  is/4
  542.     proceed
  543.  
  544.  
  545.